iT邦幫忙

2024 iThome 鐵人賽

DAY 7
0
Software Development

Java工程師的報表入門與實作系列 第 7

JasperReports-PDF中文無法顯示的問題

  • 分享至 

  • xImage
  •  

問題原因

上一篇我們發現匯出的pdf沒有正常顯示中文字的部分,是pdf檔為了確保跨平台顯示效果一致,需要將字體嵌入到檔案中,但JasperReports因為版權問題不支援中文,就會導致中文無法正確顯示。

解決方法

Google後看到有滿多人遇到同樣的問題,網路上也不只一種解決方法,這篇就介紹其中兩種。

方法一:將字體導入Jaspersoft Studio

  • 先自行下載或在本機取得想要用的字體tff檔
  • 在Jaspersoft Studio介面,點選Window -> Preferences,開啟偏好設定
  • 選擇Jaspersoft Studio -> Fonts,(1.)點選右邊的「Add」按鈕新增字體
  • (2.)點選Browse導入我們的字體tff檔
  • (3.)PDF Encoding建議選擇identity-H(Unicode with horizontal writing)的字體編碼
  • (4.)勾選Embed this font in pdf document,將字體嵌入pdf中
  • 最後點選「Finish」將字體添加
  • 接著點選文字元素時就可以選擇我們剛剛添加的字體了

方法二:將字體打包成jar放入Maven

如果第一種方法不管用,那可以直接將字體的jar檔作為dependency引入Maven

  • 到偏好設定中的Jaspersoft Studio -> Fonts,選擇自己導入的字體後,點擊右邊的「Export」,將字體匯出打包為jar檔
    https://ithelp.ithome.com.tw/upload/images/20240921/20169094GVNDrxHFgi.jpg
  • 將jar檔引入Maven,可以執行下面的Maven指令:
mvn install:install-file -Dfile=C:/Users/Desktop/font/myFont.jar -DgroupId=com.demo.report -DartifactId=font -Dversion=1.0.0 -Dpackaging=jar
  • 依照指令中設定的groupId、artifactId與版本引入Maven
<!-- pdf 中文字體jar-->
<dependency>
    <groupId>com.demo.report</groupId>
    <artifactId>font</artifactId>
    <version>1.0.0</version>
</dependency>

匯出PDF

解決字體問題後,再匯出一次pdf檔,中文字就正常顯示啦


Reference


上一篇
JasperReports-匯出PDF
下一篇
JasperReports-為PDF加上浮水印
系列文
Java工程師的報表入門與實作30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言